#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
验证修复后的压缩功能
"""

import sys
import os
import subprocess

# 添加项目根目录到Python路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

def create_sample_video():
    """创建一个示例视频文件供测试"""
    print("创建示例视频文件...")
    
    try:
        # 创建一个10秒的测试视频
        cmd = [
            'ffmpeg', '-f', 'lavfi', '-i', 'testsrc=duration=10:size=640x480:rate=30',
            '-c:v', 'libx264', '-preset', 'ultrafast', '-crf', '18',
            'sample_video.mp4', '-y'
        ]
        
        result = subprocess.run(cmd, capture_output=True, text=True)
        
        if result.returncode == 0 and os.path.exists('sample_video.mp4'):
            file_size = os.path.getsize('sample_video.mp4')
            print(f"✅ 示例视频创建成功: sample_video.mp4 ({file_size} 字节)")
            return True
        else:
            print(f"❌ 示例视频创建失败: {result.stderr}")
            return False
            
    except Exception as e:
        print(f"❌ 创建示例视频时出错: {str(e)}")
        return False

def test_command_line():
    """测试命令行版本"""
    print("\n测试命令行版本...")
    
    if not os.path.exists('sample_video.mp4'):
        print("❌ 示例视频不存在，跳过命令行测试")
        return False
    
    try:
        # 测试命令行压缩
        cmd = ['python', 'test_compressor.py', 'sample_video.mp4', 'medium_quality']
        result = subprocess.run(cmd, capture_output=True, text=True, timeout=60)
        
        if result.returncode == 0:
            print("✅ 命令行压缩测试成功")
            print("输出:")
            print(result.stdout)
            return True
        else:
            print("❌ 命令行压缩测试失败")
            print("错误:", result.stderr)
            return False
            
    except subprocess.TimeoutExpired:
        print("❌ 命令行测试超时")
        return False
    except Exception as e:
        print(f"❌ 命令行测试出错: {str(e)}")
        return False

def show_usage_instructions():
    """显示使用说明"""
    print("\n" + "=" * 60)
    print("🎉 压缩功能修复完成！")
    print("=" * 60)
    
    print("\n📋 修复的问题:")
    print("1. ✅ 修复了批量压缩时立即退出的问题")
    print("2. ✅ 修复了压缩状态同步问题")
    print("3. ✅ 修复了文件路径处理问题")
    print("4. ✅ 改进了错误处理机制")
    
    print("\n🚀 现在您可以:")
    print("1. 启动图形界面: python main.py")
    print("2. 使用命令行: python test_compressor.py <视频文件> [质量预设]")
    print("3. 查看演示: python demo.py")
    
    print("\n📝 使用步骤:")
    print("1. 运行: python main.py")
    print("2. 点击'选择视频文件'，选择MP4文件")
    print("3. 点击'选择输出目录'，选择保存位置")
    print("4. 选择压缩质量（推荐'中等质量'）")
    print("5. 点击'开始压缩'")
    print("6. 等待压缩完成，查看结果")
    
    print("\n⚠️  注意事项:")
    print("- 确保选择了有效的MP4视频文件")
    print("- 确保输出目录有足够的空间")
    print("- 大文件压缩需要较长时间，请耐心等待")
    print("- 压缩过程中可以点击'停止压缩'来中断")
    
    if os.path.exists('sample_video.mp4'):
        print(f"\n🎬 已为您创建示例视频: sample_video.mp4")
        print("您可以用这个文件来测试压缩功能")

def cleanup_test_files():
    """清理测试文件"""
    test_files = [
        'sample_video.mp4',
        'sample_video_compressed.mp4',
        'test_video.mp4',
        'test_video_compressed.mp4'
    ]
    
    cleaned = []
    for file in test_files:
        if os.path.exists(file):
            try:
                os.remove(file)
                cleaned.append(file)
            except:
                pass
    
    if cleaned:
        print(f"\n🧹 清理了测试文件: {', '.join(cleaned)}")

def main():
    """主函数"""
    print("=" * 60)
    print("MP4视频压缩工具 - 修复验证")
    print("=" * 60)
    
    # 创建示例视频
    video_created = create_sample_video()
    
    # 测试命令行功能
    if video_created:
        test_command_line()
    
    # 显示使用说明
    show_usage_instructions()
    
    # 询问是否清理测试文件
    if video_created:
        response = input("\n是否保留示例视频文件用于测试? (y/n): ").strip().lower()
        if response not in ['y', 'yes', '是']:
            cleanup_test_files()
        else:
            print("示例视频文件已保留，您可以用它来测试GUI功能")
    
    print("\n🎯 修复完成！现在可以正常使用压缩功能了。")

if __name__ == "__main__":
    main()
